<?php
declare (strict_types=1);
namespace app\admin\validate\market\ticket;

use think\Validate;

/**
 * 活动券数据验证
 */
class TicketCoupon extends Validate
{
    /**
     * 定义验证规则
     * 格式：'字段名'    =>    ['规则1','规则2'...]
     *
     * @var array
     */
    protected $rule = [
        'id'          => 'require',
        'issue_no'    => 'require|length:1,100',
        'coupon_type' => 'checkCoupon',

    ];

    /**
     * 定义错误信息
     * 格式：'字段名.规则名'    =>    '错误信息'
     *
     * @var array
     */
    protected $message = [
        'id'               => '操作错误',
        'issue_no.require' => '请输入活动券期号',
        'issue_no.length'  => '活动券期号为1-100个字符',
    ];

    /**
     * 验证场景
     */
    protected $scene = [
        'create' => ['issue_no', 'coupon_type'],
        'edit'   => ['id', 'issue_no', 'coupon_type'],
    ];

    /**
     * 验证活动名称或选择往期活动
     *
     * @param $value
     * @param $rule
     * @param $data
     * @return bool|string
     */
    protected function checkCoupon($value, $rule, $data)
    {
        $couponType = $data['coupon_type'] ?? 0;
        if (!in_array($couponType, [1, 2])) {
            return '请选择活动券类型';
        }

        if ($couponType == 1) {
            // 优惠券检测
            if (!isset($data['maxprice']) || !isset($data['price'])) {
                return '请设置优惠券信息';
            }

        } else if ($couponType == 2) {
            // 打折卡检测
            if (!isset($data['discount'])) {
                return '请设置打折卡信息';
            }
        }

        return true;
    }

}
